package com.wy._03Array;

/**
 * @author 吴宇~
 * @motto 我亦无他，唯手熟尔。
 * @edition jdk1.8
 * @reflection 0-1 喧闹任其喧闹，自由我自为之，我自风情万种，与世无争。
 * @date 2023/04/15/22:21
 * @target 心若有所向往，何惧道阻且长
 */
public class ArrayCRUD<T> {


    /**
     * java的可变参数的使用
     * @param objs 传入一个数组
     * @param obj 传入不限位数的参数
     * @return 把这些参数传到这个数组的后面并且输出
     * 这么写是省代码了，但是总感觉使用Object的话不太好,
     */
    public  Object[] increase1(Object[] objs,Object...obj){
        //我的需求是返回值我obj本来的类型，这种问题得看源代码了啊！！思维局限了， 想不出来，可能与映射有关系
        System.out.println(objs.getClass());
        Object[] Obj = new Object[objs.length + obj.length];
        for (int i = 0; i < objs.length; i++) {
            Obj[i]=objs[i];
        }
        for (int i = objs.length,j=0; i < Obj.length; i++,j++) {
            Obj[i]=obj[j];
        }
        return Obj;
    }


    /**
     * 和上面形成对比，一种是使用泛型，另一种是使用Object类
     * 但是错了，无法实例化泛型，还不能把obj类型转换成泛型，
     */
//    public <T> T[] increase1(T[] objs,T...obj){
//        T[] Obj = (T[]) new Object[objs.length + obj.length];
//        for (int i = 0; i < objs.length; i++) {
//            Obj[i]=objs[i];
//        }
//        for (int i = objs.length,j=0; i < Obj.length; i++,j++) {
//            Obj[i]=obj[j];
//        }
//        return Obj;
//    }
}
